home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctj0987.arc / PUSHPOP.C < prev    next >
Text File  |  1987-07-02  |  2KB  |  89 lines

  1. /*
  2.  * PUSHPOP -- PC Tech Journal Laser Printer Graphics Box Test
  3.  *
  4.  * Version 1.0
  5.  *
  6.  * Copyright (c) 1987, Ziff Communications Company
  7.  * Program by: Rainer McCown
  8.  *
  9.  * This routine uses a simple macro to draw a graphics box at 22
  10.  * positions across the page.  A push is executed after the first 21
  11.  * boxes are drawn.  21 pops followed by the numbers 01 thru 21
  12.  * respectively are then printed.
  13.  */
  14.  
  15. #include "string.h"
  16.  
  17. #define STD_OUT 1
  18.  
  19. extern void sndl(char [], int),
  20.         snd (char []),
  21.         setbinary(int);
  22.  
  23. /******************************* MAIN *******************************/
  24.  
  25. void main()
  26.  
  27. {
  28.  int cnt;
  29.  char *txt, *p;
  30.  
  31.  /* Change STD_OUT to binary mode to avoid
  32.     converting LFs to CR,LF and to avoid
  33.     stopping on EOFs
  34.   */
  35.  
  36.  setbinary(STD_OUT);
  37.  
  38.  /* Initialize the printer */
  39.  
  40.  snd("\x1BE");                  /* Reset the printer   */
  41.  snd("\x1B&l0O");               /* Portrait mode       */
  42.  
  43.  /* Send macro defn to printer */
  44.  
  45.  snd("\x1B&f1Y\x1B&f0X");       /* Start macro #1 definition */
  46.  snd("\x1B*p-95Y\x1B*p-10X");   /* Position offset           */
  47.  snd("\x1B*t150R");             /* Resolution = 150dpi       */
  48.  snd("\x1B*r1A\x0D\x0A");       /* Start raster graphic      */
  49.  
  50.  /* Send the bit pattern for a box */
  51.  
  52.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");           /* Top    */
  53.  for (cnt = 0; cnt < 31; cnt++)
  54.     sndl("\x1B*b5W\x80\x00\x00\x00\x01", 10);   /* Mid    */
  55.  snd("\x1B*b5W\xFF\xFF\xFF\xFF\xFF");           /* Bottom */
  56.  
  57.  /* End the box and the macro */
  58.  
  59.  snd("\x1B*rB\x1B&f1X");
  60.  
  61.  /* Position cursor, push location, execute macro */
  62.  
  63.  txt = "\x1B*p??00X\x1B*p100Y\x1B&f0S\x1B&f1y2X";
  64.  p = strchr(txt, '?');          /* Point to fill location */
  65.  for (cnt = 1; cnt <= 22; cnt++)
  66.      {
  67.       p[0] = '0' + cnt/10;      /* Format 10s digit    */
  68.       p[1] = '0' + cnt%10;      /* Format 1s digit     */
  69.       snd(txt);         /* Send to the printer */
  70.      }
  71.  
  72.  /* Pop location, write numbers */
  73.  
  74.  txt = "\x0D\x0A\x1B&f1S??";
  75.  p = strchr(txt, '?');          /* Point to fill location */
  76.  for (cnt = 1; cnt <= 21; cnt++)
  77.      {
  78.       p[0] = '0' + cnt/10;      /* Format 10s digit    */
  79.       p[1] = '0' + cnt%10;      /* Format 1s digit     */
  80.       snd(txt);         /* Send to the printer */
  81.      }
  82.  
  83.  /* Eject page */
  84.  
  85.  snd("\f");
  86.  
  87. } /* End MAIN */
  88.  
  89.